<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>22_this指向的面试题</title>
</head>
<body>
    <script>
        var name = 'Global';
        var obj = {
            name: 'Object',
            sayName: function () {
                console.log(this.name);
            },
            innerObj: {
                name: 'Inner Object',
                sayNameAgain: function () {
                    var innerFunction = function () {
                        console.log(this.name);
                    };
                    innerFunction();
                }
            }
            // 当调用 innerFunction() 时，由于它是作为一个普通函数被调用的（没有通过某个对象来调用它，
            // 例如没有类似 obj.innerObj.innerFunction() 这样的调用形式），
            // 在非严格模式下（代码中未体现严格模式相关设定），this 会指向全局对象（在浏览器环境中通常是 window 对象）。
            // 因为全局变量有 name 且值为 'Global'，所以这里最终会输出 'Global'。
        };

        obj.sayName(); // Object
        obj.innerObj.sayNameAgain(); // Global
    </script>
</body>
</html>